A Simulation of Demand-Driven Dataflow: Translation from Lucid into MDC Language
نویسندگان
چکیده
Message Driven Computation (MIX) is a model of computation with which we haw been eqerimenting at the Illinois Institute of Technology. It is our h i r e to prove the viability of MDC in practice for the expression of parallel algorithms and the implementation of ficnctional and datajlbw programming hguuges. In the following pages we &cuss our implementation of the Lucid programming language in ME. The discussion will present a subset of Lucid which illustrates the principles ofLuci4 Message Driven Computing, and the translation into and the interpretation of ahtaflow graphs. 1.0 Message Driven Computing Message Driven Computing (MDC) is a model of parallel and distributed computation developed at the Illinois Institute of Technology by Thomas Christopher [Christopher 19891. Central to MDC is the notion of a computational event. Computational events are executions of functions which map input messages into output messages. All message passing between locations in MDC is achieved unidirectionally and asynchronously. A computational event occurs at a location when a pattern of messages accumulates at the location. Locations are named by computable tuples of information. When two or more computational events OCCUT at a location, mutual exclusion between the computational events is guaranteed. MDC has been implemented on a variety of machines: the Encore Multimax, the BBN Butterfly, and the NCUBE. 2.0 Lucid Lucid is a family of functional dataflow languages defined and designed by Wadge and Ashcroft Wadge and Ashcroft 19851. Inherent to the definition of any particular Lucid language are sequences, Lucid operators, pointwise infix and prefix numeric operatow user functions (filters), and list operators (optional). 2.1 Terminology of Lucid A sequence in Lucid is def ied to be an infinite series of values ordered (or tagged) by time. The sequence is the basic tenet of Lucid programming. Some examples of sequences are constants, definitions, and the results of function calls. A constant sequence is a sequence whose value at every time is the same. A definition of a sequence provides a programmer the facility to have variables which change over time but not to have variables whme history of updates is destroyed. A definition implies that Lucid is a single-assignment language (a tenet of pure dataflow and functional languages). A function maps one or more input sequences into an output sequence. In the literature, functions are often alluded to as filters. Sequenoes are operated on by Lucid operators, pointwise operators, and functions. A Lucid operator is a function which maps one or two input streams onto an output stream whose values are usually values in the history of the input streams. 2.2 Selected Lucid Operators Defmed
منابع مشابه
Integrating Lucid's Declarative Dataflow Paradigm into Object-Orientation
The dataflow language Lucid applies concepts from intensional logic to declarative ISWIM expressions which are intensionalised relative to the dimension of time, thus introducing the notion of an expression’s history. Lucian, a language derived from Lucid, embeds dataflow into object-orientation allowing the intensionalisation of objects. Lucian introduces the notion of a declarative intensiona...
متن کاملFirst-Order Functional Languages and Intensional Logic
The purpose of this paper is to demonstrate that first-order functional programs can be transformed into intensional programs of nullary variables, in a semantics preserving way. On the foundational side, the goal of our study is to bring new insights and a better understanding of the nature of functional languages. From a practical point of view, our investigation provides a formal basis for t...
متن کاملFrom Lucid to TransLucid: Iteration, Dataflow, Intensional and Cartesian Programming
We present the development of the Lucid language from the Original Lucid of the mid1970s to the TransLucid of today. Each successive version of the language has been a generalisation of previous languages, but with a further understanding of the problems at hand. The Original Lucid (1976), originally designed for purposes of formal verification, was used to formalise the iteration in while-loop...
متن کاملObservations on Spreadsheet Languages, Intension and Dataflow
Spreadsheet languages for distributed computing are of great interest because they unite ease of use with the ability to express parallel computations. This paper discusses some issues that these languages raise, in the context of dataflow and intensional programming languages such as Lucid. First, proper design and implementation of spreadsheet languages (as we see it) places stress on both th...
متن کاملHigher-Order Lucid∗
In this paper we remedy one of the most annoying weaknesses of Lucid and indexical languages in general: the lack of higher-order functions. We describe a simple generalization of the “place-code” approach (as discovered by Ostrum and formalized by Yaghi) which handles programs with functions of arbitrarily high orders; in other words, typed Iswim. A source program P with function definitions (...
متن کامل